﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;
#include <list>
#include <stack>
#include <queue>

//template<typename T>
//void removeDuplicates(list<T>& alist)
//{
//	T curValue;
//	typename list<T>::iterator cur, p;
//	cur = alist.begin();
//
//	while (cur != alist.end())
//	{
//		curValue = *cur;
//		p = ++cur;
//
//		while (p != alist.end())
//		{
//			if (*p == curValue)
//			{
//				//
//				p == cur ? cur = p = alist.erase(p) : p = alist.erase(p);
//			}
//			else
//			{
//				p++;
//			}
//		}
//	}
//}
//int main()
//{
//
//	list<int> lt;
//	lt.push_back(1);
//	lt.push_back(2);
//	lt.push_back(1);
//	lt.push_back(4);
//	lt.push_back(1);
//	lt.push_back(3);
//	lt.push_back(2);
//
//	removeDuplicates(lt);
//
//	return 0;
//}

//int main()
//
//{
//
//	int ar[] = { 0,1, 2, 3, 4,  5, 6, 7, 8, 9 };
//
//	int n = sizeof(ar) / sizeof(int);
//
//	list<int> mylist(ar, ar + n);
//
//	list<int>::iterator pos = find(mylist.begin(), mylist.end(), 5);
//
//	reverse(mylist.begin(), pos);
//
//	reverse(pos, mylist.end());
//
//	list<int>::const_reverse_iterator crit = mylist.crbegin();
//
//	while (crit != mylist.crend())
//
//	{
//
//		cout << *crit << " ";
//
//		++crit;
//
//	}
//
//	cout << endl;
//
//}

//int main()
//{
//
//	int array[] = { 1, 2, 3, 4, 0, 5, 6, 7, 8, 9 };
//
//	int n = sizeof(array) / sizeof(int);
//
//	list<int> mylist(array, array + n);
//
//	auto it = mylist.begin();
//
//	while (it != mylist.end())
//
//	{
//
//		if (*it != 0)
//
//			cout << *it << " ";
//
//		else
//
//			it = mylist.erase(it);
//
//		++it;
//
//	}
//
//	return 0;
//
//}

int main()
{

    //stack<char> S;

    //char x, y;

    //x = 'n'; y = 'g';

    //S.push(x); S.push('i'); S.push(y);

    //S.pop(); S.push('r'); S.push('t'); S.push(x);

    //S.pop(); S.push('s');

    //while (!S.empty())

    //{

    //    x = S.top();

    //    S.pop();

    //    cout << x;

    //};

    //cout << y;

    queue<char> Q;

    char x, y;

    x = 'n'; y = 'g';

    Q.push(x); Q.push('i'); Q.push(y);

    Q.pop(); Q.push('r'); Q.push('t'); Q.push(x);

    Q.pop(); Q.push('s');

    while (!Q.empty())

    {

        x = Q.front();

        Q.pop();

        cout << x;

    };

    cout << y;
    return 0;
}